﻿namespace DotNetStar.OpenSDK.WeChat.Pay
{
    using Payment;
    using System.ComponentModel.DataAnnotations;

    /// <summary>
    /// 支付查询订单。适用于 H5支付/APP支付/公众平台支付/扫码支付。
    /// </summary>
    /// <remarks>
    /// 该接口提供所有微信支付订单的查询，商户可以通过查询订单接口主动查询订单状态，完成下一步的业务逻辑。
    /// 需要调用查询接口的情况：
    /// ◆ 当商户后台、网络、服务器等出现异常，商户系统最终未接收到支付通知；
    /// ◆ 调用支付接口后，返回系统错误或未知交易状态情况；
    /// ◆ 调用刷卡支付API，返回USERPAYING的状态；
    /// ◆ 调用关单或撤销接口API之前，需确认支付状态；
    /// </remarks>
    /// <seealso cref="WeChatPayApiRequest{OrderQueryApIResponse}" />
    public class OrderQueryApiRequest : WeChatPayApiRequest<OrderQueryApIResponse>
    {
        /// <summary>
        /// 初始化 <see cref="OrderQueryApiRequest"/> 类的新实例。
        /// </summary>
        /// <param name="config">支付配置。</param>
        /// <param name="requestUrl">查询订单 api 地址。若使用了沙箱地址，可以传入沙箱地址的 url。</param>
        public OrderQueryApiRequest(PaymentConfig config, string requestUrl= "https://api.mch.weixin.qq.com/pay/orderquery") 
            : base(requestUrl,config)
        {
        }
        /// <summary>
        /// 微信的订单号，建议优先使用。微信订单号和商品订单号必须二选一。
        /// </summary>
        [StringLength(32)]
        public string Transaction_Id { get; set; }
    }
}
